#pragma once

#include <exception>
#include <string>

namespace pharmacy_server
{
    class except : public std::exception
    {
    public:
        except(const std::string& msg) : s("pharmacy_server_except::" + msg)
        {
        }

        const char* what() const throw()
        {
            return s.c_str();
        }

        std::string s;
    };

    class model_except : public except
    {
    public:
        model_except(const std::string& msg) : except("model_except::" + msg)
        {
        }
    };

    class view_except : public except
    {
    public:
        view_except(const std::string& msg) : except("view_except::" + msg)
        {
        }
    };

    class controller_except : public except
    {
    public:
        controller_except(const std::string& msg) : except("controller_except::" + msg)
        {
        }
    };

    class server_except : public except
    {
    public:
        server_except(const std::string& msg) : except("server_except::" + msg)
        {
        }
    };

}